<?php

require_once APPPATH.'core/Unit_Test_Abstract.php';

class Sala_Aula_Utest extends Unit_Test_Abstract{

	public function __construct(){
		parent::__construct();
	}

	public function index(){

		$dados = array(
				'title' => 'Teste Unitário - Salas '
		);

		// If somente para verificar se a requisição vem do formulário
		if ($this->input->post('nome')){
			$this->executa_teste();
			$dados ['report'] = $this->unit->report();
		}

		$this->load->view('templates/cabecalho', $dados);
		$this->load->view('salaaula/sala_aula_utest_view', $dados);
		$this->load->view('templates/rodape');

	}

	private function executa_teste(){
		$this->test__construct();
		$this->test_define_sala();
		$this->test_get();
		$this->test_update_sala();
		$this->test_delete_sala($this->input->post('nome'));
		
	}

	private function test__construct()
	{
		$this->load->model("Sala_Aula_Model");
		$this->run( $this->Sala_Aula_Model === NULL, false, 'test__construct', 'Testa o construtor');
	}

	private function test_define_sala(){
		$this->run( $this->Sala_Aula_Model->define_sala(), TRUE, 'test_define_sala', 'Testa a criação de novas salas de aula');
	}
	
	private function test_get(){
		$this->run(gettype($this->Sala_Aula_Model->get()), 'array', 'test_get', 'Testa a recuperação das salas de aula');
		$this->run($this->Sala_Aula_Model->get(), array(), 'test_get', 'Testa a recuperação das salas de aula');
	}
	
	private function test_update_sala(){
		$this->run($this->Sala_Aula_Model->update_sala(), TRUE, 'test_update_sala', 'Testa a atualização de uma sala de aula');
	}
	private function test_delete_sala($nome){
		$result = $this->Sala_Aula_Model->get_where(array('nome'=>$nome));
		//print_r($result);
		foreach ( $result as $key => $sala) {
			$pk=$sala['id'];
			$this->run($this->Sala_Aula_Model->apaga($pk), NULL, 'test_delete_sala ', 'Testa a remoção de uma saula de aula');
		}
	}
}
?>